﻿using System;
using System.Runtime.CompilerServices;
using Microsoft.Office.Interop.Excel;

namespace HYCodeBase.ExcelUtility.ModelLayer
{
	public class Range
	{
		internal Range(object thisObject)
		{
			this.m_range = thisObject;
		}

		internal object ThisRangeObject
		{
			get
			{
				return this.m_range;
			}
		}

        //[Dynamic]
        //public dynamic Left
        //{
        //    [return: Dynamic]
        //    get
        //    {
        //        return ExcelUtilityMethod.GetProperty(this.m_range, "Left");
        //    }
        //}

        //[Dynamic]
        //public dynamic Top
        //{
        //    [return: Dynamic]
        //    get
        //    {
        //        return ExcelUtilityMethod.GetProperty(this.m_range, "Top");
        //    }
        //}

        //[Dynamic]
        //public dynamic ColumnWidth
        //{
        //    [return: Dynamic]
        //    get
        //    {
        //        return ExcelUtilityMethod.GetProperty(this.m_range, "ColumnWidth");
        //    }
        //    [param: Dynamic]
        //    set
        //    {
        //        ExcelUtilityMethod.SetProperty(this.m_range, "ColumnWidth", new object[]
        //        {
        //            value
        //        });
        //    }
        //}

        //[Dynamic]
        //public dynamic RowHeight
        //{
        //    [return: Dynamic]
        //    get
        //    {
        //        return ExcelUtilityMethod.GetProperty(this.m_range, "RowHeight");
        //    }
        //    [param: Dynamic]
        //    set
        //    {
        //        ExcelUtilityMethod.SetProperty(this.m_range, "RowHeight", new object[]
        //        {
        //            value
        //        });
        //    }
        //}

        //[Dynamic]
        //public dynamic Value
        //{
        //    [return: Dynamic]
        //    get
        //    {
        //        return ExcelUtilityMethod.GetProperty(this.m_range, "Value");
        //    }
        //    [param: Dynamic]
        //    set
        //    {
        //        ExcelUtilityMethod.SetProperty(this.m_range, "Value", new object[]
        //        {
        //            value
        //        });
        //    }
        //}

        //[Dynamic]
        //public dynamic Value2
        //{
        //    [return: Dynamic]
        //    get
        //    {
        //        return ExcelUtilityMethod.GetProperty(this.m_range, "Value2");
        //    }
        //    [param: Dynamic]
        //    set
        //    {
        //        ExcelUtilityMethod.SetProperty(this.m_range, "Value2", new object[]
        //        {
        //            value
        //        });
        //    }
        //}

        //[Dynamic]
        //public dynamic Text
        //{
        //    [return: Dynamic]
        //    get
        //    {
        //        return ExcelUtilityMethod.GetProperty(this.m_range, "Text");
        //    }
        //}

		public void SetValue2(object[,] input)
		{
			ExcelUtilityMethod.SetProperty(this.m_range, "Value2", new object[]
			{
				input
			});
		}

		public int EndRow()
		{
			return (int)ExcelUtilityMethod.GetProperty(ExcelUtilityMethod.GetProperty(this.m_range, "End", new object[]
			{
				XlDirection.xlDown
			}), "Row");
		}

		public void AutoFit()
		{
			ExcelUtilityMethod.UseMethod(ExcelUtilityMethod.GetProperty(this.m_range, "EntireColumn"), "AutoFit", null);
		}

		private object m_range;
	}
}
